package com.lyf.design.summary.njusoftware.coupling;

/**
 * 访问耦合.
 * 隐式访问 → 实现中访问 → 成员变量访问 → 参数变量 → 无访问
 * @author liyunfei
 */
public class VisitCoupling {
    
    private static class ModuleA{
          ModuleB moduleB = new ModuleB();// 成员变量访问
          ModuleB method(){
              System.out.println("执行ModuleA 的method");
              return new ModuleB();
          }
          void implementsVisit(){
              ModuleB moduleB = new ModuleB();
              moduleB.method();
          }
          void memberVisit(){
              moduleB.method();;
          }
          void paramVisit(ModuleB moduleB){
              moduleB.method();
          }
    }
    
    private static class ModuleB{
         void method(){
             System.out.println("执行ModuleB 的method");
         }
    }
    
    public static void main(String[] args) {
        ModuleA moduleA = new ModuleA();
        moduleA.method().method();// 隐式访问--跳过B对象直接调用B模块的方法
        moduleA.implementsVisit();
        
    }
    
}
